草庐IT

Ruby Grape JSON-over-HTTP API,自定义 JSON 表示

全部标签

ruby-on-rails - 未定义方法 `cache' 为 nil :NilClass after upgrading to rails 4. 2.5.1

从Rails4.2.5升级到最近发布的4.2.5.1时,我遇到了这个错误。此错误仅适用于具有呈现无效状态的before_filter的规范,例如renderfile:"public/422",status::unauthorized。我在ruby​​-2.2.2和ruby​​-2.3.0上都收到了这个错误错误存在于action_view解析器方法中,暗示@cache值为nil。然而,在initialize方法中它应该被实例化:@cache=Cache.new我仍在研究可重现的样本,但到目前为止我还不知道@cache怎么可能是nil。这些是在我的test.rb环境中设置的配置变量conf

ruby - 将 Ruby 字符串编码为 JSON 字符串

jsongem不允许直接将字符串编码为它们的JSON表示形式。我暂时移植了这段PHP代码:$text=json_encode($string);对于这个Ruby:text=string.inspect它似乎完成了这项工作,但出于某种原因,如果string本身包含带有换行符的文字字符串(它实际上是JS代码),这些换行符\n将保持原样\n,而不是编码为\\n。我能理解这是否是#inspect的正确行为,但是......如何在Ruby中将字符串值编码为其JSON表示形式? 最佳答案 这适用于stock1.9.3+标准库JSON:requi

ruby - #<Hash> 的未定义方法 `bytesize'

我想将博主标签存储和更新到GAE中的数据存储区。当我运行该代码时,出现此错误:javax.servlet.ServletContextlog:ApplicationError/base/data/home/apps/yet-another-problem/1.334886515480009498/WEB-INF/gems/gems/sinatra-0.9.2/lib/sinatra/base.rb:45:in`each':undefinedmethod`bytesize'for#(NoMethodError)代码classLabelsclassLabelDataincludeBumbl

ruby-on-rails - 未定义的方法 `session_path'

我正在使用Rails+Devise+OmniAuth+GoogleOAuth2。我的用户模型(user.rb)包含:devise:registerable,:omniauthable,:omniauth_providers=>[:google_oauth2]我的routes.rb看起来像:Rails.application.routes.drawdodevise_for:users,controllers:{omniauth_callbacks:'omniauth_callbacks'}devise_scope:userdoget'sign_in',:to=>'devise/sessi

ruby - 我可以在使用 Devise 成功登录后执行自定义操作吗?

我有一个具有基本Devise身份验证的应用程序。登录后,我想查找用户帐户(用户belongs_to帐户,帐户has_many用户),并将其存储在session中,以便它像@current_user一样可用。rails将session存储成这样的方式是什么?是否有一个钩子(Hook)可以与Devise一起使用,以便在成功登录后执行代码? 最佳答案 实际上,在Devise中组合使用Omniauth和数据库登录模块的情况下,接受的答案无法正常工作。在Devise中每次成功登录操作后执行的nativeHook(忽略用户身份验证channel

ruby - 是否可以将 JSON 字符串转换为对象?

这个问题在这里已经有了答案:关闭10年前。社区在10个月前审查了是否重新打开此问题,然后将其关闭:原始关闭原因未解决PossibleDuplicate:ParsingaJSONstringinruby是否可以将JSON字符串转换为Ruby对象?我想使用类似于以下的表达式来访问它的信息:drawer.stations.tv.headerJSON字符串:{"drawer":{"stations":{"tv":{"header":"TVChannels","logos":{"one":"www1","two":"www2","three":"www3"}}}}}

ruby - 裸星号作为方法定义中的参数 : def f(*)

我知道这是什么意思:deff(*args)...end但这意味着什么,为什么要使用它?它也可以与命名参数一起出现吗?deff(*)...end 最佳答案 deff(*)与deff(*args)具有相同的效果,只是它没有命名globbed参数数组。如果您希望函数接受任意数量的参数但实际上不需要在函数内引用它们,则可以使用它——例如,如果您重写一个方法但调用super而没有传递一个显式参数列表,这会导致将原始参数传递给super。您也可以编写deff(a,b,*)。 关于ruby-裸星号作为

ruby-on-rails - rspec 测试有问题,未定义的方法 'post'

我正在编写规范来测试当有人通过URL发送查询时mashup_controller的行为。我需要模拟URL中包含的参数,我读到post()方法可以做到这一点,但是当我收到错误时:1)MashupControllersimulatesqueryFailure/Error:post:createNoMethodError:undefinedmethod`post'for##./mashup_controller_rspec.rb:9:in`block(2levels)in'Finishedin0.20199seconds1example,1failureFailedexamples:rspe

带有字符串键的 ruby​​ 新散列冒号表示法

使用ruby​​1.9.3,字符串键似乎无法使用哈希冒号表示法:1.9.3p194:005>{abc:5}=>{:abc=>5}1.9.3p194:004>{'abc':5}SyntaxError:(irb):4:syntaxerror,unexpected':',expectingtASSOC{'abc':5}^我认为我正在运行正确版本的Ruby1.9.3p194:006>RUBY_ENGINE=>"ruby"1.9.3p194:007>RUBY_VERSION=>"1.9.3" 最佳答案 没错-新的哈希冒号表示法仅在键为符号时才

Ruby - 使用 class_eval 定义方法

我正在学习SaaS斯坦福类(class),尝试完成thisassignment的第5部分我很难理解这个概念,这就是我试图做的:classClassdefattr_accessor_with_history(attr_name)attr_name=attr_name.to_sattr_readerattr_nameattr_readerattr_name+'_history'class_eval%Q'{def#{attr_name}(a);#{attr_name}_history.push(a);end;}'endend我可能做错了各种各样的事情,阅读了Ruby之书关于元编程的章节,但我